10 REM BINARY MIND READER 20 REM AND LIE DETECTOR 30 REM BY ROYAL C. JONES 40 GOSUB60100 50 PRINT"[147][154]THINK OF A NUMBER--" 60 PRINT"[159]A POSITIVE INTEGER, PLEASE" 80 REM FIRST HOW BIG IS IT? 90 N$=" 1":REM THE BINARY NUMBER 100 FOR I=1 TO 29:REM LOTS OF BITS 110 N$=N$+"0" 120 PRINT"[154]IS YOUR NUMBER LESS THAN" 130 PRINT N$"[154] BINARY" 135 PRINT" [145]" 140 PRINT 2^I"[154]DECIMAL?" 150 GOSUB 620 160 IF A$="Y" GOTO 240 170 PRINT" [145][145]" 175 PRINT"[154]THEN IT IS AT LEAST"I+1"[154]BITS LONG" 180 D$=D$+"?":REM PLACE MARKERS 190 NEXT I 200 PRINT"[147] LET'S NOT GET CARRIED AWAY!" 210 PRINT" [150]THINK OF ANOTHER NUMBER" 220 FORA=1TO2000:NEXT:RUN50 240 REM NOW FOR THE NUMBER ITSELF 250 N$=" 1":I=I-1:N=2^I 260 IF N=1 GOTO 380:REM NO QUESTION 270 FOR J=I-1 TO 0 STEP-1:PRINT 280 PRINT"YOUR NUMBER LOOKS LIKE" 290 PRINT N$;LEFT$(D$,I+2-LEN(N$)); 300 PRINT" BINARY" 310 PRINT"IS YOUR NUMBER LESS THAN" 315 PRINT" [145]" 320 PRINT N+2^J"DECIMAL?" 330 GOSUB 620 340 IF A$="Y" THEN N$=N$+"0":GOTO 360 350 N$=N$+"1":N=N+2^J 360 NEXT J 380 REM EUREKA! 390 PRINT:PRINT"[158][147]THE NUMBER YOU ARE THINKING OF IS" 400 PRINT N$" [154]BINARY" 410 PRINT N"[154]DECIMAL" 420 PRINT:PRINT"AM I CORRECT? [145]"; 430 GOSUB 620:PRINT 440 IF A$="Y"THEN PRINT"AS ALWAYS":GOTO700 460 REM THE LIE DETECTOR 470 PRINT:PRINT"[159]WHAT IS YOUR NUMBER:";:LE=15:NU=1:AL=.:GOSUB60500:W=VAL(C$) 480 IF W=N THEN PRINT"[150]AHA! JUST AS I SAID!":GOTO700 490 IF W<>INT(W) THENGOSUB1000:GOTO700 500 IF W<1 THENGOSUB1100:GOTO700 510 T=2^I:REM THE TEST NUMBER 520 IF W=T+2^J THEN T=T+2^J:GOTO 570 550 IF W=T GOTO 590 580 PRINT"[150]AHA! BUT YOU SAID IT WAS NOT LESS THAN":PRINT T:GOTO700 590 NEXT J 600 PRINT"OH-OH! BAD PROGRAM":GOTO700 620 REM INPUT SUBROUTINE 630 PRINT"[154]Y[154]ES OR N[154]O: [157][157][157]";:POKE198,. 640 GET A$:IF A$<>"Y"ANDA$<>"N"THEN640 650 PRINT""A$"[146]":REM HILIGHT ANSWER 655 IFPEEK(203)<>64THEN655 660 RETURN 700 IFPEEK(203)<>64THEN700 705 PRINT"[154]WOULD YOU LIKE TO ME TO GUESS ANOTHER?":POKE198,. 710 A=PEEK(203):IFA<>25ANDA<>39THEN710 720 IFA=25THENRUN50 730 GOTO60000 1000 PRINT"BUT I ASKED FOR AN INTEGER":PRINT"TRY AGAIN":RETURN 1100 PRINT"BUT I ASKED FOR A POSITIVE NUMBER":PRINT"TRY AGAIN":RETURN 60000 OPEN15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":INPUT#15,ER:CLOSE15 60010 IFER<>63THENEND 60020 LOAD"HELLO CONNECT",8 60100 POKE53280,11:POKE53281, 0:PRINT"[147][142]"; 60101 PRINT"[158]LOADSTARPRESENTS:" 60102 PRINT"[151][160]" 60103 PRINT"[176]````````````````````````````````````[174]" 60104 PRINT"[176]{[174][176]{[174]}[173][189]"; 60105 PRINT"[173][189]}}}}[156]BINARYMIND"; 60106 PRINT"READER}}}}[156]"; 60107 PRINT"ROYALC.JONES}}}}"; 60108 PRINT"[156]COPYRIGHT1988}}"; 60109 PRINT"}}[176][174][176][174]}[173]{[189]"; 60110 PRINT"[173]{[189][173]````````````````````````````````````[189]" 60111 PRINT"[158]PRESSSPACETOCONTINUE" 60120 IFPEEK(203)<>60THEN60120 60130 RETURN 60500 C$="":POKE198,.:PRINT"[164]"; 60510 FORA=1TOLE+1 60520 GETA$:IFA$=""THEN60520 60530 IFA$=CHR$(13)THENPRINT"[157] ":RETURN 60540 IFA$=CHR$(20)ANDA>1THENPRINT"[157][157] [157][157][164]";:A=A-1:C$=LEFT$(C$,A-1):GOTO60520 60550 IF(A=LE+1)THEN60520 60560 IF(NU)AND((A$>="0")AND(A$<="9"))THEN60595 60570 IF(AL)AND((A$>=" "ANDA$<="/")OR(A$>=":"ANDA$<="Z"))THEN60595 60580 IF(AL)THENIF(A$>="[193]"ANDA$<="[218]")THEN60595 60590 GOTO60520 60595 PRINT"[157]"A$;:POKE212,.:PRINT"[164]";:C$=C$+A$:NEXT